package com.an.blog.service;

import com.an.blog.admin.domain.BlogComment;
import com.an.blog.admin.domain.bo.BlogCommentBo;
import com.an.blog.admin.domain.vo.BlogCommentVo;
import com.an.blog.web.domain.bo.BlogCommentQueryWebBo;
import com.an.blog.web.domain.vo.BlogCommentWebVo;
import com.an.common.core.domain.PageQuery;
import com.an.common.core.page.TableDataInfo;

import java.util.List;

/**
 * 博客评论Service接口
 *
 * @author Ann
 * @date 2023-05-08
 */
public interface IBlogCommentService {

    /**
     * 查询博客评论列表
     */
    TableDataInfo<BlogCommentVo> queryPageList(BlogCommentBo bo, PageQuery pageQuery);

    /**
     * 查询博客评论列表
     */
    List<BlogCommentVo> queryList(BlogCommentBo bo);


    /**
     * 校验并批量删除博客评论信息
     */
    Boolean deleteWithValidByIds(List<Long> ids, Boolean isValid);

    /**
     * 评论
     *
     * @param blogComment 博客评论
     * @return {@link Boolean }
     * @author: Ann
     * @createDate: 2023/06/08 15:53:43
     * @version: 1.0.0
     */
    Boolean comment(BlogComment blogComment);

    /**
     * 查询数通过类型和主题id
     *
     * @param commentArticleType 评论文章类型
     * @param topicId            主题id
     * @return {@link Long }
     * @author: Ann
     * @createDate: 2023/06/08 16:28:53
     * @version: 1.0.0
     */
    Long queryCountByTypeAndTopicId(String commentArticleType, Long topicId);

    /**
     * 查询网站列表
     *
     * @param commentQueryWebBo 评论查询网络业务对象
     * @return {@link List }<{@link BlogCommentWebVo }>
     * @author: Ann
     * @createDate: 2023/06/09 08:05:39
     * @version: 1.0.0
     */
    List<BlogCommentWebVo> queryWebList(BlogCommentQueryWebBo commentQueryWebBo);

    /**
     * 删除评论网站
     *
     * @param commentId 评论id
     * @return {@link Boolean }
     * @author: Ann
     * @createDate: 2023/06/10 17:01:48
     * @version: 1.0.0
     */
    Boolean deleteCommentOnWeb(Long commentId);
}
